#define _CRT_SECURE_NO_WARNINGS 1
#include <iostream>
using namespace std;
const int N = 2e5 + 10;
int q[N];
void solve()
{
	memset(q, 0, sizeof q);
	int n, k;
	cin >> n >> k;
	string s;
	cin >> s;
	int k1 = k;
	int k2 = 0;
	for (int i = 0; i < s.size(); i++)
	{
		if (k == 0)
		{
			if (k1 % 2)
				for (int j = i; j < s.size(); j++)
				{
					if (s[j] == '1')
						s[j] = '0';
					else s[j] = '1';
				}
			break;
		}
		if (i == s.size() - 1)
		{
			q[i] += k;
			if (k2 % 2 == 0)
			{
			}
			else
			{
					if (s[i] == '1')
						s[i] = '0';
					else s[i] = '1';
			}
			k = 0;
			break;
		}
		if (s[i] == '1')
		{
			s[i] = '1';
			if (k2 % 2 == 0)
			{
				if (k % 2)
				{
					q[i] ++;
					k--;
					k2++;
				}
			}
			else
			{
				if (k % 2 == 0)
				{
					q[i] ++;
					k--;
					k2++;
				}
			}
		}
		else
		{
			s[i] = '1';
			if (k2 % 2 == 0)
			{
				if (k % 2 == 0)
				{
					q[i] ++;
					k--;
					k2++;
				}
			}
			else
			{
				if (k % 2)
				{
					q[i] ++;
					k--;
					k2++;
				}
			}
		}
	}
	cout << s << endl;
	for (int i = 0; i < s.size(); i++)
		cout << q[i] << ' ';

	cout << endl;
}
int main()
{
	int t;
	cin >> t;
	while (t--)
		solve();
	return 0;
}